/**
 * 自己动手写操作系统
 *
 * 系统引导部分，启动时由硬件加载运行，然后完成对二级引导程序loader的加载
 * 该部分程序存储于磁盘的第1个扇区，在计算机启动时将会由BIOS加载到0x7c00处
 * 之后，将由BIOS跳转至0x7c00处开始运行
 * 
 * 创建时间：2021年8月5日
 * 作者：李述铜
 * 联系邮箱: 527676163@qq.com
 */
	#include "boot.h"

  	// 16位代码，务必加上
  	.code16
 	.text
	.global _start
	.extern boot_entry
_start:
	//set ds ss ef fs gs to 0
	mov $0,%ax
	mov %ax,%ds
	mov %ax,%ss
	mov %ax,%es
	mov %ax,%fs
	mov %ax,%gs
	mov $_start,%esp
	//show boot
	mov $0xe,%ah
	mov $'b',%al
	int $0x10
	mov $'o',%al
	int $0x10
	mov $'o',%al
	int $0x10
	mov $'t',%al
	int $0x10
	mov $'\n',%al
	int $0x10
	mov $'\r',%al
	int $0x10
	//read disk
read_loader:
	mov $0x8000,%bx  //read to mem in 0x8000
	mov $0x240,%ax   //ah=2,read; al=0x40,read 64 sectors, 64*512=32k
	mov $0x2,%cx     //in bios, hard disk start in 1
	mov $0x80,%dx
	int $0x13
	jc read_loader //if cf==1, error occurs
	jmp boot_entry
	jmp .

	// 引导结束段
	//.section boot_end, "ax"
//boot_sig: .byte 0x55, 0xaa
